home *** CD-ROM | disk | FTP | other *** search
Oberon Document | 1994-06-07 | 5.1 KB | 126 lines | [oODC/obnF] |
- Documents.StdDocumentDesc
- Documents.DocumentDesc
- Containers.ViewDesc
- Views.ViewDesc
- Stores.StoreDesc
- Documents.ModelDesc
- Containers.ModelDesc
- Models.ModelDesc
- Stores.ElemDesc
- TextViews.StdViewDesc
- TextViews.ViewDesc
- TextModels.StdModelDesc
- TextModels.ModelDesc
- TextModels.AttributesDesc
- Geneva
- Geneva
- StdStamps.StdViewDesc
- Geneva
- MODULE MacStrings;
- (* cp
- String conversion between Macintosh and Oberon strings added
- String Manipulation from 'ToolboxUtilities' here
- String Comparison from 'OSUtilities' here
- BCD-Conversion Package here
- Procedure 'Munger' from 'ToolboxUtilities' here
- IMPORT SYSTEM, MacTypes;
- CONST
- CODE = 1; NOSTKCHK = 4;
- D0 = 0; A0 = 8; A1 = 9;
- PROCEDURE [CODE] cmpStringCase 0A4H, 03CH;
- PROCEDURE [CODE] cmpString 0A0H, 03CH;
- PROCEDURE [CODE] cmpStringMarksCase 0A6H, 03CH;
- PROCEDURE [CODE] cmpStringMarks 0A2H, 03CH;
- PROCEDURE [CODE] uprString 0A0H, 054H;
- PROCEDURE [CODE] uprStringMarks 0A2H, 054H;
- PROCEDURE [CODE] Pack7 (selector: INTEGER) 0A9H, 0EEH;
- PROCEDURE [CODE] relStringCase 0A4H, 050H;
- PROCEDURE [CODE] relString 0A0H, 050H;
- PROCEDURE [CODE] relStringMarksCase 0A6H, 050H;
- PROCEDURE [CODE] relStringMarks 0A2H, 050H;
- (** String Conversions Macintosh <=> Oberon **)
- PROCEDURE [NOSTKCHK] SetStr255* (VAR theStr255: MacTypes.Str255; chars: ARRAY OF CHAR);
- VAR i: INTEGER; ch: CHAR;
- BEGIN
- i := 0;
- REPEAT ch := chars[i]; INC(i); theStr255[i] := ch UNTIL (ch = 0X) OR (i = 256);
- theStr255[0] := CHR(i - 1)
- END SetStr255;
- PROCEDURE [NOSTKCHK] GetStr255* (VAR theStr255: MacTypes.Str255; VAR chars: ARRAY OF CHAR);
- VAR n: INTEGER; ch: CHAR;
- BEGIN
- n := ORD(theStr255[0]);
- IF LEN(chars) < n THEN n := SHORT(LEN(chars)) END;
- chars[n] := 0X;
- WHILE n > 0 DO ch := theStr255[n]; DEC(n); chars[n] := ch END
- END GetStr255;
- (** String Manipulation **)
- PROCEDURE [CODE] NewString* (theString: MacTypes.Str255): MacTypes.StringHandle 0A9H, 006H;
- PROCEDURE [CODE] SetString* (h: MacTypes.StringHandle; theString: MacTypes.Str255) 0A9H, 007H;
- PROCEDURE [CODE] GetString* (stringID: INTEGER): MacTypes.StringHandle 0A9H, 0BAH;
- (** String Comparison **)
- PROCEDURE [NOSTKCHK] EqualString* (aStr, bStr: MacTypes.Str255; caseSens, diacSens: BOOLEAN): BOOLEAN;
- VAR b: BOOLEAN;
- BEGIN
- SYSTEM.PUTREG(A0, SYSTEM.ADR(aStr[1]));
- SYSTEM.PUTREG(A1, SYSTEM.ADR(bStr[1]));
- SYSTEM.PUTREG(D0, ORD(aStr[0]) * 10000H + ORD(bStr[0]));
- IF diacSens THEN
- IF caseSens THEN cmpStringCase ELSE cmpString END
- ELSE
- IF caseSens THEN cmpStringMarksCase ELSE cmpStringMarks END
- END;
- SYSTEM.GETREG(D0, b);
- RETURN ~b
- END EqualString;
- PROCEDURE [NOSTKCHK] UprString* (VAR theString: MacTypes.Str255; diacSens: BOOLEAN);
- BEGIN
- SYSTEM.PUTREG(A0, SYSTEM.ADR(theString[1]));
- SYSTEM.PUTREG(D0, LONG(ORD(theString[0])));
- IF diacSens THEN uprString ELSE uprStringMarks END
- END UprString;
- (** Binary-Decimal Conversion Package **)
- PROCEDURE [NOSTKCHK] NumToString* (theNum: LONGINT; VAR theString: MacTypes.Str255);
- BEGIN
- SYSTEM.PUTREG(A0, SYSTEM.ADR(theString));
- SYSTEM.PUTREG(D0, theNum);
- Pack7(0)
- END NumToString;
- PROCEDURE [NOSTKCHK] StringToNum* (theString: MacTypes.Str255; VAR theNum: LONGINT);
- BEGIN
- SYSTEM.PUTREG(A0, SYSTEM.ADR(theString));
- Pack7(1);
- SYSTEM.GETREG(D0, theNum)
- END StringToNum;
- (** Byte Manipulation **)
- PROCEDURE [CODE] Munger* (h: MacTypes.Handle; offset: LONGINT; ptr1: MacTypes.Ptr;
- len1: LONGINT; ptr2: MacTypes.Ptr; len2: LONGINT): LONGINT 0A9H, 0E0H;
- (** 128K ROM **)
- PROCEDURE [NOSTKCHK] RelString* (VAR aStr, bStr: MacTypes.Str255; caseSens, diacSens: BOOLEAN): INTEGER;
- CONST RelString = 0A050H; Marks = 200H; Case = 400H;
- VAR res: INTEGER;
- BEGIN
- SYSTEM.PUTREG(A0, SYSTEM.ADR(aStr[1]));
- SYSTEM.PUTREG(A1, SYSTEM.ADR(bStr[1]));
- SYSTEM.PUTREG(D0, ORD(aStr[0]) * 10000H + ORD(bStr[0]));
- IF diacSens THEN
- IF caseSens THEN relStringCase ELSE relString END
- ELSE
- IF caseSens THEN relStringMarksCase ELSE relStringMarks END
- END;
- SYSTEM.GETREG(D0, res);
- RETURN res
- END RelString;
- END MacStrings.
- TextControllers.StdCtrlDesc
- TextControllers.ControllerDesc
- Containers.ControllerDesc
- Controllers.ControllerDesc
- TextRulers.StdRulerDesc
- TextRulers.RulerDesc
- TextRulers.StdStyleDesc
- TextRulers.StyleDesc
- TextRulers.AttributesDesc
- Geneva
- Documents.ControllerDesc
-